package zy.gongxiang.pucharse.service.impl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import zy.gongxiang.pucharse.dataobject.Udc;
import zy.gongxiang.pucharse.dto.UdcDTO;
import zy.gongxiang.pucharse.dto.UdcDetailDTO;
import zy.gongxiang.pucharse.enums.ResultEnum;
import zy.gongxiang.pucharse.exception.CommonException;
import zy.gongxiang.pucharse.repository.UdcRepository;
import zy.gongxiang.pucharse.service.UdcService;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: zhangy
 * @Date: 2018/9/18 10:33
 * @Description:
 */
@Slf4j
@Service
public class UdcServiceImpl implements UdcService {

    @Autowired
    private UdcRepository udcRepository;


    @Override
    public UdcDTO findOne(String productcode, String definedcode) {
         UdcDTO udcDTO = new UdcDTO();
         //获取UDC表头部分
         List<Udc> udcList = udcRepository.findByProductCodeAndUserdefinedCode(productcode,definedcode);
         if(udcList.isEmpty()){
             log.error("UDC查询为空,productcode:{},definedcode:{}",productcode,definedcode);
             throw new CommonException(ResultEnum.UDC_NOT_EXIST);
         }
         //表头部分赋值
         udcDTO.setProductCode(productcode);
         udcDTO.setUserdefinedCode(definedcode);
         udcDTO.setDescriptionOne(udcRepository.findDescription(productcode,definedcode));

         //获取明细部分
         List<UdcDetailDTO> udcDetailDTOList = new ArrayList<>();

         //DTO对象中list增加明细
         for(Udc udc : udcList){

             UdcDetailDTO udcDetailDTO = new UdcDetailDTO();
             udcDetailDTO.setDetailcode(udc.getDetailCode());
             udcDetailDTO.setDetailmessage(udc.getDetailMessage());
             udcDetailDTO.setDetaildescription(udc.getDetailDescription());

             udcDetailDTOList.add(udcDetailDTO);
         }
         udcDTO.setUdcDetailDTOList(udcDetailDTOList);
         //udcDTO.setProductCode();
        return udcDTO;
    }

    @Override
    public List<UdcDTO> findByDetailMessage(String msg) {



        return null;
    }

    @Override
    public UdcDTO create(UdcDTO udcDTO) {
        return null;
    }

    @Override
    public UdcDTO delete(UdcDTO udcDTO) {
        return null;
    }

    @Override
    public UdcDTO update(UdcDTO udcDTO) {
        return null;
    }
}
